import api from '@/api'

/**
 * 创建新的对话
 * @param {string} title - 对话标题
 * @returns {Promise<Object>} 返回创建的对话信息
 */
export const createNewChat = async (title) => {
  const response = await api.post('/chat/new-session', { title })
  return response.data
}

/**
 * 获取聊天历史记录
 * @returns {Promise<Array>} 返回对话历史列表
 */
export const getChatHistory = async () => {
  const response = await api.get('/chat/history')
  return response.data
}

/**
 * 获取指定对话的消息
 * @param {string|number} chatId - 对话ID
 * @returns {Promise<Array>} 返回消息列表
 */
export const getChatMessages = async (chatId) => {
  const response = await api.get(`/chat/messages/${chatId}`)
  return response.data
}

/**
 * 发送消息
 * @param {Object} params - 发送消息的参数
 * @param {string} params.message - 消息内容
 * @param {string|number} params.chatId - 对话ID
 * @param {string} params.model - AI模型
 * @param {number} params.temperature - 温度参数
 * @param {boolean} [params.regenerate] - 是否为重新生成
 * @returns {Promise<Object>} 返回AI响应
 */
export const sendMessage = async ({ message, chatId, model, temperature, regenerate = false }) => {
  const response = await api.post(
    '/chat/message',
    {
      message,
      chatId,
      model,
      temperature,
      regenerate
    },
    {
      timeout: 60000 // 60秒超时
    }
  )
  return response.data
}

/**
 * 删除对话
 * @param {string|number} chatId - 要删除的对话ID
 * @returns {Promise<Object>} 返回删除操作的结果
 */
export const deleteChat = async (chatId) => {
  const response = await api.delete(`/chat/conversation/${chatId}`)
  return response.data
}

export const chatService = {
  /**
   * 获取聊天历史记录
   * @returns {Promise} 聊天历史记录
   */
  async getChatHistory() {
    try {
      const response = await api.get('/chat/history')
      return response.data
    } catch (error) {
      console.error('获取聊天历史失败:', error)
      throw error
    }
  },

  /**
   * 删除单个会话
   * @param {number} chatId - 会话ID
   * @returns {Promise} 删除结果
   */
  async deleteConversation(chatId) {
    try {
      const response = await api.delete(`/chat/conversation/${chatId}`)
      return response.data
    } catch (error) {
      console.error('删除会话失败:', error)
      throw error
    }
  },

  /**
   * 批量删除会话
   * @param {Array<number>} chatIds - 会话ID数组
   * @returns {Promise} 删除结果
   */
  async deleteMultipleConversations(chatIds) {
    try {
      const response = await api.post('/chat/conversations/delete', { chatIds })
      return response.data
    } catch (error) {
      console.error('批量删除会话失败:', error)
      throw error
    }
  },

  /**
   * 发送聊天消息
   * @param {Object} params - 消息参数
   * @param {string} params.message - 消息内容
   * @param {string} params.model - AI模型
   * @param {number} params.temperature - 温度参数
   * @param {number} params.chatId - 会话ID（可选）
   * @returns {Promise} 发送结果
   */
  async sendMessage(params) {
    try {
      const response = await api.post('/chat/message', params)
      return response.data
    } catch (error) {
      console.error('发送消息失败:', error)
      throw error
    }
  },

  /**
   * 创建新会话
   * @param {string} title - 会话标题
   * @returns {Promise} 创建结果
   */
  async createNewChat(title) {
    try {
      const response = await api.post('/chat/new-session', { title })
      return response.data
    } catch (error) {
      console.error('创建新会话失败:', error)
      throw error
    }
  }
}

export default chatService
